package medium;

/**
 * 数学公式找规律
 *         1     7        13       19
 *         2   6 8     12 14    18
 *         3 5   9  11    15 17
 *         4     10       16
 *
 *         P     I        N        G
 *         A   L S     I  G     T
 *         Y A   H  R     T  E
 *         P     I        N
 *
 *         // 第一行的第i位数下标  f[i]:  1+i(n*2-2)
 *         // 中间第h行，包含两个队列 f1[i]: h+i(n*2-2), f2[i]: 2n-h+i(n*2-2)
 *         // 最后一行的下标 f[i]:  1+i(n*2-2)
 *         // 遍历行，按对应规律输出
 */
public class T6 {
    public static void main(String[] args) {

        convert("A", 1);
    }

    public static String convert(String s, int numRows) {
        StringBuffer out = new StringBuffer();
        if (numRows == 1) return s;
        int i = 0;
        for (int h = 1; h <= numRows; h++) {
            if (h== 1 || h == numRows ){
                while (true){
                    int index = h+i*(numRows*2-2)-1;
                    if (index >= s.length()) {
                        i= 0;
                        break;
                    }
                    out.append(s.charAt(index));
                    i++;
                }
            }else {
                while (true){
                    int index = h+i*(numRows*2-2)-1;
                    if (index >= s.length()) {
                        i= 0;
                        break;
                    }
                    out.append(s.charAt(index));
                    index = 2*numRows-h+i*(numRows*2-2)-1;
                    if (index >= s.length()) {
                        i= 0;
                        break;
                    }
                    out.append(s.charAt(index));
                    i++;
                }
            }

        }
        return out.toString();
    }

}

